<!DOCTYPE HTML>
<html>
<head>
<title>If Var is [not] Type | AutoHotkey</title>
<meta name="description" content="The &quot;if Var is Type&quot; statement checks whether a variable's contents are numeric, uppercase, etc." />
<meta name="ahk:equiv-v2" content="commands/Is.htm" />
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>If var is [not] type</h1>

<p>检查<a href="../Variables.htm">变量的</a>内容是否为数值, 大写字母或其他.</p>

<pre class="Syntax">
<span class="func">if</span> Var <span class="func">is</span> Type
<span class="func">if</span> Var <span class="func">is not</span> Type
</pre>
<h2>参数</h2>
<dl>

  <dt>Var</dt>
  <dd><p><a href="../Variables.htm">变量</a>名.</p></dd>

  <dt>Type</dt>
  <dd><p>请参阅下面的备注.</p></dd>

</dl>

<h2>备注</h2>
<p>受支持的 <em>Type</em>:</p>
<table class="info">
  <tr>
    <td style="width:15%">integer</td>
    <td>当 <em>Var</em> 非空且包含不带小数点的纯数值字符串(十进制或十六进制) 时为 true. 允许含有前导和尾随空格和 tab. 字符串可以以加号或减号开始.</td>
  </tr>
  <tr>
    <td>float</td>
    <td>当 <em>Var</em> 非空且包含浮点数; 即含有小数点的纯数值字符串时为 true. 允许含有前导和尾随空格和 tab. 字符串可以以加号, 减号或小数点开始.</td>
  </tr>
  <tr>
    <td>number</td>
    <td>当 <em>Var</em> 包含整数或浮点数(上文描述的每种数字) 时为 true.</td>
  </tr>
  <tr>
    <td>digit</td>
    <td>当 <em>Var</em> 为空或仅包含由 0 到 9 字符组成的数字时为 true. 不允许出现其他字符, 例如后面这些: 空格, tab, 加号, 减号, 小数点, 十六进制数以及 0x 前缀.</td>
  </tr>
  <tr>
    <td>xdigit</td>
    <td>十六进制数: 除了还允许 A 到 F(大写和小写形式) 字符外, 其他与 <em>digit</em> 相同. <span class="ver">[v1.0.44.09+]</span>: 允许使用 0x 前缀.</td>
  </tr>
  <tr>
    <td>alpha</td>
    <td>当 <em>Var</em> 为空或仅包含字母时为 true. 如果字符串中含有任何数字, 空格, tab, 标点或其他非字母的字符时则为 false. 例如, 如果 <em>Var</em> 包含一个空格后跟一个字母, 那么它 <em>不会</em> 被看成是 <em>alpha</em>.</td>
  </tr>
  <tr>
    <td>upper</td>
    <td>当 <em>Var</em> 为空或仅包含大写字母时为 true. 如果字符串中含有任何数字, 空格, tab, 标点或其他非大写字母的字符时则为 false.</td>
  </tr>
  <tr>
    <td>lower</td>
    <td>当 <em>Var</em> 为空或仅包含小写字母时为 true. 如果字符串中含有任何数字, 空格, tab, 标点或其他非小写字母的字符时则为 false.</td>
  </tr>
  <tr>
    <td>alnum</td>
    <td>除了还允许 0 到 9 的数字外, 其他与 <em>alpha</em> 相同.</td>
  </tr>
  <tr>
    <td>space</td>
    <td>当 <em>Var</em> 为空或仅包含空白字符时为 true, 其中空白字符包括后面这些字符: 空格(<a href="../Variables.htm">%A_Space%</a>), tab(<a href="../Variables.htm">%A_Tab%</a> 或 `t), 换行符(`n), 回车符(`r), 垂直 tab(`v) 和进纸符(`f).</td>
  </tr>
  <tr id="time">
    <td>time</td>
    <td><p>当 <em>Var</em> 包含有效的日期时间戳时为 true, 其中日期时间戳可以是 <a href="FileSetTime.htm#YYYYMMDD">YYYYMMDDHH24MISS</a> 格式的全部或开始部分. 例如, 类似 2004 这样的 4 位字符串被视为有效的. 使用 <a href="StringLen.htm">StrLen() / StringLen</a> 可以判断是否存在额外的时间部分.</p>
      <p>小于 1601 的年份会被视为无效的, 因为操作系统通常不支持它们. 被视为有效的最大年份为 9999.</p>
      <p>可以使用单词 DATE 代替 TIME, 效果相同.</p>
    </td>
  </tr>
</table>
<p class="note"><b>注意:</b> 运算符 "between", "is", "in" 和 "contains" <strong>不支持</strong> 用于<a href="../Variables.htm#Expressions">表达式</a>中.</p>
<p><span class="ver">[AHK_L 42+]:</span> 如果没有使用 <a href="StringCaseSense.htm">StringCaseSense Locale</a>, 那么会忽略系统区域设置.</p>

<h2>相关</h2>
<p><a href="../Variables.htm#YYYY">%A_YYYY%</a>, <a href="SetFormat.htm">SetFormat</a>, <a href="FileGetTime.htm">FileGetTime</a>, <a href="IfEqual.htm">IfEqual</a>, <a href="IfIn.htm">if var in/contains MatchList</a>, <a href="IfBetween.htm">if var between</a>, <a href="StringLen.htm">StrLen() / StringLen</a>, <a href="IfInString.htm">IfInString</a>, <a href="StringLower.htm">StringUpper</a>, <a href="Block.htm">区块</a>, <a href="Else.htm">Else</a></p>
<h2>示例</h2>
<div class="ex" id="ExBasic">
<p><a href="#ExBasic">#1</a></p>
<pre>if var is float
    MsgBox, %var% is a floating point number.
else if var is integer
    MsgBox, %var% is an integer.
if var is time
    MsgBox, %var% is also a valid date-time.</pre>
</div>

</body>
</html>